import random
import os
import sys
import subprocess

def get_input(prompt):
    result = subprocess.run(["powershell", "-Command", f"Read-Host '{prompt}'"], capture_output=True, text=True)
    return result.stdout.strip()

def guess_number(level):
    if level == 1:
        target = random.randint(1, 10)
        print("已选择等级 1：目标数字在 1 到 10 之间。")
    elif level == 2:
        target = random.randint(1, 20)
        print("已选择等级 2：目标数字在 1 到 20 之间。")
    elif level == 3:
        target = random.randint(1, 30)
        print("已选择等级 3：目标数字在 1 到 30 之间。")
    else:
        print("无效的等级选择！")
        return

    while True:
        try:
            guess = int(get_input("请输入你猜的数字: "))
            if guess == target:
                print("恭喜你，猜对了！🎉")
                break
            elif guess > target:
                print("猜大了，再试试！")
            else:
                print("猜小了，再试试！")
        except ValueError:
            print("请输入一个有效的数字！")

def pack_to_exe():
    print("\n检测到您可能希望将游戏打包成可执行文件。")
    print("正在安装 PyInstaller...")
    try:
        os.system("pip install pyinstaller")
        print("PyInstaller 安装成功！")
    except Exception as e:
        print(f"安装 PyInstaller 失败：{e}")
        return

    print("\n正在打包游戏...")
    try:
        os.system(f"pyinstaller --onefile --noconsole --debug=all {sys.argv[0]}")
        print("打包成功！")
        print(f"可执行文件位于当前目录的 'dist' 文件夹中。")
    except Exception as e:
        print(f"打包失败：{e}")

def main():
    print("""
    ⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
    Welcome to the Guess Number Game!
    ⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
    """)

    while True:
        try:
            level = int(get_input("请选择游戏等级 (1-3): "))
            if level not in [1, 2, 3]:
                print("等级选择无效，请输入 1、2 或 3！")
                continue
            guess_number(level)
        except ValueError:
            print("请输入一个有效的数字！")

        play_again = get_input("是否再来一局？(输入 'yes' 继续，其他退出): ")
        if play_again.lower() != "yes":
            print("感谢游玩，再见！👋")
            pack_choice = get_input("是否将游戏打包成可执行文件？(输入 'yes' 打包，其他退出): ")
            if pack_choice.lower() == "yes":
                pack_to_exe()
            break

if __name__ == "__main__":
    main()